Software Platform Configured to Provide Analytics and Recommendations

ABSTRACT

Methods and systems provide a software platform configured to provide analytics and recommendations. The software platform provides a software application that targets functional fitness with features that motivate and attract athletes for long-term use. The software application provides social networking functionalities including groups (e.g., gym, professionals, friends) as well as workout discovery, scalability, and fitness ranking. The software application further provides an engine that presents a workout generator based on available equipment and the user profile. The application includes an analysis tool that determines workout effectiveness including muscle groups, power measurements, equipment and movements, and effectiveness of workouts over time. In some embodiments, the application includes guidance on movements and stretches using instructions, videos, photos, etc.

CROSS REFERENCE TO RELATED APPLICATION

This application claims priority to U.S. Provisional Application 62/395,071, filed Sep. 15, 2016, incorporated by reference in its entirety.

BACKGROUND

Various technologies attempt to provide fitness tracking features and, in some instances, fitness analytics. However, heretofore, no existing solution can break down fitness movements to enable, on-demand, computer-generated workouts and provide workout discovery with their friends, gym and groups. Conventional systems also fail to synchronize and allow for offline access with fast response time and relate all movement styles to results such as impacted muscle groups, calories, etc. No existing solution can find complex relationships between workouts across users and groups in a social network. Conventional systems also fail to suggest stretching routines that target the movements that makeup a workout. Furthermore, conventional systems do not identify deficiencies in a user's workout routine; tie fitness, nutrition, sports, gamification, and biosignal in a single solution; learn user's workouts with results to improve specifically to the user; and provide detail analytics with necessary information to assist coaches to improve athlete performance.

Prior systems, methods, and apparatus struggle from several technical problems. For example, no existing solution can express the concept of a workout (from multiple fitness disciplines) into a generic format that can be processed efficiently by a computer. Known systems fail to define a computational model that can be used to define property functions that quantify the different characteristics of an arbitrary workout (e.g., duration, calorie consumption, average power, etc). Similarly, heretofore, systems do not define a computational model that can be used to quantify ‘similarities’ between two arbitrary workouts and they do not define a computational model that includes a set of mutation operators which can be used to both modify existing workouts and create entirely new workouts.

Furthermore, no existing solution defines a computational model that allows users to combine mutation operators with property functions to create optimization functions. Such functions could be used to modify an arbitrary workout in an attempt to optimize a given property of it (duration, calories, muscles, aesthetics, etc.) or synthesize a completely new workout. Prior systems do not define a computational model that can incorporate an athletes performance (both quantitative data like “score” and body metrics (BPM, blood/oxygen level, etc) or qualitative metrics like “how much they enjoyed the workout?”) to both detect training deficiencies and suggest improvements to an athlete's programming routine.

SUMMARY

An illustrative method according to a set of instructions stored on the memory of a computing device includes receiving, at a processor of the computing device, a movement selection; determining, by the processor, a movement repetition for the received movement selection; receiving, at the processor, a group of movement selections, wherein the group of movement selections includes a plurality of movement selections and a plurality of movement repetitions corresponding to each of the plurality of movement selections; determining, by the processor, a group repetition for the received group of movement selections; forming, by the processor, a workout based on the group of movement selections and the group repetitions; and modifying the workout based on data received from use of the workout.

In another aspect, the present disclosure is directed to a method of forming a workout. The method is implemented by one or more processors of a fitness genome apparatus communicatively coupled with a server and according to a set of instructions stored on a memory of the computing device. The method includes identifying, by the fitness genome apparatus, a movement associated with a user. The method includes determining, by the fitness genome apparatus, a movement repetition count associated with the movement. The method includes identifying, by the fitness genome apparatus, a group of movements, wherein the group of movements includes a plurality of movements and a plurality of movement repetition counts corresponding to each of the plurality of movements. The method includes determining, by the fitness genome apparatus, a group repetition count for the group of movements. The method includes forming, by the fitness genome apparatus, a workout based on the group of movements and the group repetition count. The method includes modifying, by the fitness genome apparatus, the workout based on performance data received from use of the workout. In some implementations, identifying the movement includes receiving, by the fitness genome apparatus, physical characteristic data associated with the user. In some implementations, identifying the movement includes detecting, by the fitness genome apparatus, a motion associated with the user. In some implementations, identifying the movement includes identifying, by fitness genome apparatus, the movement based on at least one of the physical characteristic data and the motion associated with the user.

In some implementations, determining the group repetition count is based on at least one of experience data associated with the user, a training regime selected by the user, and historical workout data associated with the user.

In some implementations, the method includes receiving, by the fitness genome apparatus and from the server, social media data comprising a list of people the user follows on a social media group. In some implementations, the method includes identifying, by the fitness genome apparatus, the group of movements based on the social media data.

In some implementations, modifying the workout includes detecting, by the fitness genome apparatus, a motion associated with the user. In some implementations, modifying the workout includes determining, by the fitness genome apparatus, a training regime where the user has difficulty progressing over time. In some implementations, modifying the workout includes decreasing the group repetition count.

In some implementations, modifying the workout includes detecting, by the fitness genome apparatus, a motion associated with the user. In some implementations, the method includes determining, by the fitness genome apparatus, a training regime having difficulty decreasing over time and increasing the group repetition count.

In some implementations, the method includes classifying, by the fitness genome apparatus, the workout based on a property function, a distance function, and an optimization function. In some implementations, the property function quantifies at least one of a duration of the workout, a calorie consumption of the workout, and an average power of the workout. In some implementations, the distance function quantifies a similarity of the workout and a second workout. In some implementations, the optimization function comprises a mutation operator and the property functions.

In some implementations, the method includes modifying the workout using an optimization function. In some implementations, the method includes detecting, by the fitness genome apparatus, training deficiencies based on the performance data. In some implementations, the method includes generating, by the fitness genome apparatus, suggestions to improve the user's performance. In some implementations, the method includes displaying, by the fitness genome apparatus, the suggestions on a screen of the computing device.

In some implementations, the method includes determining, by the fitness genome apparatus, muscles targeted by the movement. In some implementations, the method includes identifying, by the fitness genome apparatus, a stretch exercise associated with the movement. In some implementations, the method includes displaying, by the fitness genome apparatus and on a screen of the computing device, a title of the stretch exercise, a description of the stretch exercise, and a figure performing the stretch exercise.

In another aspect, the present disclosure is directed to a system to form a workout. The system includes a computing device communicatively coupled with a server, the computing device configured to identify a movement associated with a user. The computing device is configured to determine a movement repetition count associated with the movement. The computing device is configured to identify a group of movements. The group of movements includes a plurality of movements and a plurality of movement repetition counts corresponding to each of the plurality of movements. The computing device is configured to determine a group repetition count for the group of movements. The computing device is configured to form a workout based on the group of movements and the group repetition count. The computing device is configured to modify the workout based on performance data received from use of the workout.

In some implementations, the computing device is configured to receive, physical characteristic data associated with the user. In some implementations, computing device is configured to detect, a motion associated with the user. In some implementations, computing device is configured to identify the movement based on at least one of the physical characteristic data and the motion associated with the user.

In some implementations, the computing device configured to determine the group repetition count based on at least one of experience data associated with the user, a training regime selected by the user, and historical workout data associated with the user.

In some implementations, the computing device configured to receive, from the server, social media data comprising a list of people the user follows on a social media group and identify the group of movements based on the social media data. In some implementations, the computing device configured to detect a motion associated with the user, determine a training regime having difficulty increasing over time; and decrease the group repetition count to modify the workout. In some implementations, the computing device configured to detect a motion associated with the user, determine a training regime having difficulty decreasing over time, and increase the group repetition count to modify the workout.

In some implementations, the computing device configured to classify the workout based on a property function, a distance function, and an optimization function. In some implementations, the property function quantifies at least one of a duration of the workout, a calorie consumption of the workout, and an average power of the workout. In some implementations, the distance function quantifies a similarity of the workout and a second workout. In some implementations, the optimization function comprises a mutation operator and the property functions.

In some implementations, the computing device configured to modify the workout based on the optimization function. In some implementations, the computing device configured to detect training deficiencies based on the performance data, generate suggestions to improve the performance data, and display the suggestions on a screen of the computing device.

In some implementations, the computing device configured to determine muscles targeted by the movement, identify a stretch exercise associated with the movement, and display, on a screen of the computing device, a title of the stretch exercise, a description of the stretch exercise, and figure performing the stretch exercise.

BRIEF DESCRIPTION OF THE DRAWINGS

Illustrative embodiments will hereafter be described with reference to the accompanying drawings.

FIG. 1A is a diagram demonstrating a fitness analytic system in accordance with an illustrative embodiment.

FIG. 1B is a diagram of a muscle impact heat map, in accordance with an illustrative embodiment.

FIG. 2 is a diagram demonstrating a fitness analytic apparatus in accordance with an illustrative embodiment.

FIGS. 3-6 depict illustrative graphic user interfaces providing timeline and generator functionalities in accordance with an illustrative embodiment.

FIGS. 7-10 depict illustrative graphic user interfaces providing social media group and following functionalities in accordance with an illustrative embodiment.

FIGS. 11-13 depict illustrative graphic user interfaces providing analytic functionalities in accordance with an illustrative embodiment.

FIGS. 14-17 depict illustrative graphic user interfaces providing glossary and instructional functionalities in accordance with an illustrative embodiment.

FIGS. 18-21 depict illustrative graphic user interfaces providing athlete data functionalities in accordance with an illustrative embodiment.

FIGS. 22-25 depict illustrative graphic user interfaces providing edit and score work out functionalities in accordance with an illustrative embodiment.

FIGS. 26-32 depict illustrative graphic user interfaces providing create workout functionalities in accordance with an illustrative embodiment.

FIG. 33 is a flow diagram illustrating a method of encoding a workout in accordance with an illustrative embodiment.

FIG. 34 is a flow diagram illustrating a method of optimizing a workout in accordance with an illustrative embodiment.

FIG. 35 is a flow diagram illustrating a method of forming a workout, in accordance with an illustrative embodiment

DETAILED DESCRIPTION

Described herein are illustrative embodiments for methods and systems that provide for a software platform configured to provide analytics and recommendations. In an illustrative embodiment, the software platform provides a software application that targets functional fitness with features that motivate and attract athletes for long-term use. The software application provides social networking functionalities including groups (e.g., gym, professionals, friends) as well as workout discovery, scalability, and fitness ranking. The software application further provides an engine that generates on-demand customized workouts based on available equipment and the user profile. The application includes an analysis tool that determines workout effectiveness based on metrics like muscle groups, power measurements, equipment and movements, etc. In some embodiments, the application includes guidance on movements and stretches using instructions, videos, photos, etc.

FIG. 1A depicts an illustrative fitness analytic system 110 including a fitness genome engine 110. The fitness genome engine 110 can be implemented as a processor with programmed instructions. The fitness genome engine 110 processes workout data from one or more users 120, identifying patterns and performing analytics. The engine 110 is capable of breaking up a workout into its most fundamental components such as movements (with order and frequency), targeted muscles, consumed calories, equipment used, bio signal integration, and other user profile. The engine 110 discovers patterns and relationships based on user's workout history for many possible applications, such as training analysis, workout recommendations, workout discovery, and social networking. The training analysis detects deficiencies in user workout programs. The engine 110 is communicatively coupled to a server 130 to enable social networking. The social networking aspect enables the connection of users to friends and groups doing similar workouts for performance measurements and ranking.

In some implementations, user 120 may be any number of different types of user electronic devices configured to communicate via a network (e.g., Local Area Network (LAN) or Wide-Area Network (WAN), including without limitation, a laptop computer, desktop computer, a tablet computer, a mobile computing device (e.g., smartphone, smartwatch), or any other type and form of computing device or combinations of devices. In some implementations, user 120 may be a user of fitness analytic system 110. In some implementations, user 120 may include any or all hardware, software, and functionality as fitness genome engine 110.

Fitness genome engine 110 may be included in any number of different types of electronic devices configured to communicate via a network (e.g., Local Area Network (LAN) or Wide-Area Network (WAN), including without limitation, a laptop computer, desktop computer, a tablet computer, a mobile computing device (e.g., smartphone, smartwatch), a server, a cloud computing device, or any other type and form of computing device or combinations of devices.

Fitness genome engine 110 may include a processor 111 (not shown) and memory 112 (not shown). Memory 112 may store machine instructions that, when executed by processor 111 cause processor 111 to perform one or more of the operations described herein. Processor 111 may include a microprocessor, ASIC, FPGA, etc., or combinations thereof. In many implementations, processor 111 may be a multi-core processor or an array of processors. Memory 112 may include, but is not limited to, electronic, optical, magnetic, or any other storage devices capable of providing processor 111 with program instructions. Memory 112 may include a floppy disk, CD-ROM, DVD, magnetic disk, memory chip, ROM, RAM, EEPROM, EPROM, flash memory, optical media, or any other suitable memory from which processor 111 can read instructions. The instructions may include code from any suitable computer programming language such as, but not limited to, C, C++, C#, Java, JavaScript, Perl, HTML, XML, Python and Visual Basic.

Fitness genome engine 110 may include one or more network interfaces 113 (not shown). A network interface 113 may include any type and form of interface, including Ethernet including 10 Base T, 100 Base T, or 1000 Base T (“Gigabit”); any of the varieties of 802.11 wireless, such as 802.11a, 802.11b, 802.11g, 802.11n, or 802.11ac; cellular, including CDMA, LTE, 3G, or 4G cellular; Bluetooth or other short range wireless connections; or any combination of these or other interfaces for communicating with a network or other computing devices. In some implementations, user 120 may include a plurality of network interfaces 113 of different types, allowing for connections to a variety of networks, such as local area networks or wide area networks including the Internet, via different sub-networks.

Fitness genome engine 110 may include one or more user interface or input/output devices 114 (not shown). A user interface device 114 may be any electronic device that conveys data to a user by generating sensory information (e.g., a visualization on a display, one or more sounds, tactile feedback, etc.) and/or converts received sensory information from a user into electronic signals (e.g., a keyboard, a mouse, a pointing device, a touch screen display, a microphone, etc.). The one or more user interface devices may be internal to the housing of fitness genome engine 110, such as a built-in display, touch screen, microphone, etc., or external to the housing of fitness genome engine 110, such as a monitor connected to fitness genome engine 110, a speaker connected to fitness genome engine 110, etc., according to various implementations.

Fitness genome engine 110 may be included in memory 112, may be an application 114 (e.g., as shown in FIGS. 3-32), or may execute an application 114 using processor 111. Application 114 may be an application, applet, script, service, daemon, routine, or other executable logic for receiving content (e.g., audio, video, speech, motion detection data, movement detection data, accelerometer data, gyroscope data, vibration data, conductivity/sweat data, temperature data) and for transmitting responses, commands, or any other data associated with a user (e.g., user 120) of fitness genome engine 110.

Fitness genome engine 110 defines a fundamental data type called “workout.” From the workout data type, a variety of functions can be defined such as properties, distance, and optimization. Workouts are represented using a recursive data structure (Abstract Syntax Tree being one example) which allows for complex workouts to be represented as a collection of many, simpler, workouts. The most fundamental workout the system defines is a “Movement” which cannot be broken down into other workouts.

Fitness genome engine 110 includes various property functions (referred to as “Analytics”) capable of processing the recursive data structure used to represent a workout. These property functions allow the system to calculate a number of different metrics that are useful for fitness analysis. The process may include a decomposition phase, an analysis phase, and a composition phase.

In the decomposition phase, the fitness analytic system 110 (via the property function) breaks up the workout into its most fundamental components (referred to hereinafter as “movements”). For example, the fitness analytic system 110 may identify and/or extracts a push-up movement, a sit-up movement, and a back squat movement from the workout. The fitness analytic system 110 (via the property function) may determine the order and/or the number of times each of the identified/extracted movements were completed. In some implementations, the fitness analytic system 110 (via the property function) may determine the order and/or the number of times each of the identified/extracted movements were completed based on the workout “score.” In some implementations, movements are defined so that they are atomic such that the user (e.g., user 120) either completes the entire movement or none of it all. For example, the fitness analytic system 110 does not count the completion of half of a push-up as an official/completed push-up. In some implementations, a movement may have a magnitude component. This applies to movements that allow for variable difficulty (e.g., mass of a dumbbell, height of a rope, distance of a run). In some implementations, a special composite movement (referred to herein as “Movement Complex”) may be defined using other simpler movements as building blocks. This allows us to express a concept that is common to some types of weight training where a group of movements is treated atomically. For example, no breaking in between a Clean and Jerk movement and a Burpee Box Jump movement.

Fitness genome engine 110 is a customizable fitness platform capable of supporting any number of different movement possibilities based on the application. In some implementations, the user (e.g., user 120) selects the one or more movements for the fitness genome engine 110 to support. In some implementations, fitness genome engine 110 includes a custom movement catalog defining an exhaustive list of all supported movements and their associated attributes. In some implementations, fitness genome engine 110 supports the following attributes: symbol, name, equation for work, muscle profile, and equipment. A symbol attribute is a unique variable name that can be used in workout expressions. A name attribute refers to the movement (e.g., singular and/or plural) within the fitness community. In some implementations, a name attribute refers to the movement in many different languages. A muscle profile attribute is the set of all (or a portion) of muscles activated during a movement. In some implementations, A muscle profile attribute includes the extent at which the muscles are activated relative to other muscles in the body (e.g., 0%=No Usage, 100%=Exclusive Usage). An equipment attribute is the set of equipment needed to perform a workout.

In the analysis phase, the fitness analytic system 110 (via the property function) performs calculations at the movement-level, utilizing the some or all of the attributes defined in the movement catalog. In the composition phase, the fitness analytic system 110 (via the property function) uses the values calculated during the analysis phase to derive a metric applying to the entire workout.

Property functions that evaluate the characteristics of a workout can output either scalar values or they may output more complex data structures such as a set. Scalar values can express characteristics such as estimated duration, calorie consumption, and power. Sets can express properties such as active muscles, equipment, and useful stretches. Distance functions are a special type of function that can quantify the similarity of two workouts, for example. Using the functions described above, it possible to design optimization programs that can selectively modify an arbitrary workout to produce one with desired characteristics as defined by one or more property functions (e.g., optimal duration, aesthetics, or movement composition) and potentially some other set of constraints (e.g., thresholds, termination criteria, etc). In some implementations, Property functions may be used to calculate metrics for multiple workouts which can either be related or unrelated. Related workouts may be selected by category (e.g., leg workouts, bicep workouts, shoulder workouts, cardiovascular workouts) and/or based on time range (e.g., day of the week, week, month, year, etc).

Property function may calculate, for example, energy expenditure, average power, muscle impact, and muscle push/pull ratio. Energy expenditure is the total calories consumed by the body during the workout (an example calculation described below). Energy expenditure (referred to herein as ‘E’) may be one of the most vital property functions because fitness analytic system 110 uses energy expenditure to calculate, for example, Average Power, Muscle Ratio, and Muscle Impact.

Average power is the average power output of the body during a workout. In some implementations, fitness analytic system 110 calculates the average power output of the body during a workout by dividing total energy expenditure by the workout duration based on the assumption that average power equates to energy over time.

As shown in FIG. 1B, fitness analytic system 110 may generate a muscle impact heat map indicating muscle utilization for a workout. For example, fitness analytic system 110 may calculate a muscle impact heat map by determining the total energy expenditure for a workout and distributing the result across each muscle using the muscle profile attribute defined in the movement catalog.

Muscle push/pull ratio is the ratio of pushing to pulling performed by a muscle and its counter muscle. For example, the bicep muscle group pulls, while the triceps muscle group pushes. Fitness analytic system 110 may calculate a muscle push/pull ratio using the ratio of energy expended by each muscle (as described herein).

The energy required to complete a movement is calculated based on the equation, E_(movement)=W_(movement) EFF_(movement) where EFF_(movement) is the movement efficiency coefficient. Every movement has a custom equation for mechanical work, W_(movement,) defined within the movement catalog as an attribute. These equations can be built on top of existing equations (W=F·s and W=T·θ being examples). Each equation may also include independent variables such as body height, body mass, and movement magnitude. As such, fitness analytic system 110 adjusts its calculations based on the mass of the weight lifted, for example, during a bench press movement or a deadlift movement. This also allows fitness analytic system 110 to adjust calculations to both reflect the anatomy of the person completing the workout and account for movements with a variable magnitude component (e.g., mass for weightlifting, distance for running). These equations may also make assumptions about the different body ratios (e.g., arm spam is approximately equal to height) based on worldwide averages for humans. In some implementations, the efficiency coefficient may be necessary because the human body is not 100% efficient at converting the chemical energy contained within food to the mechanical energy needed to complete a movement. The coefficient encapsulates various concepts, such as genetics, physiological adaptations (caused by diet, age, etc.), technique/muscle recruitment, and fitness levels (from training).

Still referring to FIG. 1A, fitness analytic system 110 supports several ways to determine the value of this coefficient (with varying levels of accuracy). In some implementations, fitness analytic system 110 may use a fixed value approach. For example, fitness analytic system 110 may use 25% as the efficiency coefficient for all movements. In some implementations, the fixed value may be any percentage value between 1% and 100%. In some implementations, fitness analytic system 110 may use a different coefficient for each movement, reflecting the different mechanics involved in each. For example, fitness analytic system 110 may use a unique coefficient for each movement derived based on empirical data. In some implementations, fitness analytic system 110 may use an adaptive approach, as described below.

In the adaptive approach, fitness analytic system 110 may define a custom map of coefficients (containing one coefficient for each movement) for each user that can be adjusted over time using workout data provided by the user (i.e., an adaptive map of coefficients). For example, each user starts with a map of coefficients based on the fixed value approach or the unique coefficient approach. After the user (e.g., user 120) logs specific benchmark workouts, fitness analytic system 110 adjusts the coefficient (e.g., for each or a subset of the movements in that workout) to reflect the discrepancy between the user's score with a predefined baseline for that benchmark. For example, good results equate to increased efficiency and bad results equate to decreased efficiency. To derive a benchmark, fitness analytic system 110 (or user 120) selects the appropriate benchmark for the desired application (e.g., based on muscle group). In some implementations, fitness analytic system 110 receives an input selection from user 120 indicating the selected benchmark. Fitness analytic system 110 (or user 120) may determine a mathematical relationship between a score (e.g., time, total work, heart rate, etc.) and a workout efficiency coefficient, EFF_(workout) (Note: This is different from the movement coefficient, EFF_(movement)). In some implementations, fitness analytic system 110 (or user 120) may determine this relationship based on empirical data. In some implementations, fitness analytic system 110 calculates the workout efficiency coefficient based on the following equation:

EFF _(workout)=(W _(workout) /E _(workout)),   (1)

where E_(workout) is measured energy expenditure for the workout

In some implementations, equation (1) may be expressed in terms of the efficiency coefficients for each movement included in the workout based on the following equation:

EFF _(workout)=(EFF _(movement1) *R ₁)+(EFF _(movement2) *R ₂)+. . . +(EFF _(movementN) *R _(N))   (2)

where R_(i) is the total work involved for the movement, W_(movement), divided by the work for the entire workout, W_(workout).

Fitness analytic system 110 may use equation (2) during the optimization process (as discussed below).

The adaptive approach is a multi-variable optimization problem. This allows fitness analytic system 110 to utilize algorithms and heuristics to find an optimal solution. The goal of this algorithm is to optimize a series of equations in the form defined in equation B, where EFF_(i) are the unknown values representing the efficiency coefficients for each of the movements contained in the workout. In some implementations, fitness analytic system 110 may restrict the value of each efficiency coefficient within a predetermined range. For example, fitness analytic system 110 may restrict the value of each efficient coefficient between 0.23 and 0.27. The efficiency coefficient may be any value between 0 and 1. In some implementations, fitness analytic system 110 may use a Genetic Algorithm approach, as described herein.

Fitness analytic system 110 may use the Genetic Algorithm approach to mimic the concept of Natural Selection by creating an environment where a population of candidate solutions compete and evolve towards an optimal solution. The Genetic Algorithm approach is an iterative approach where for each iteration (generation), the fitness (degree of correctness) of each candidate solution is evaluated and used to influence the probability that the solution is stochastically selected and used to form a new generation (after being mutated). The goal of this approach is to continually improve the fitness of candidate solutions from generation-to-generation until either an optimal solution is found or a predefined number of generations have elapsed.

In order for the fitness analytic system 110 to use the Genetic Algorithm approach (as described above), the fitness analytic system 110 identifies/represents a candidate solution (the set of efficiency coefficients EFF_(i)) as a binary array by concatenating the binary form of each individual movement efficiency, EFF_(i), as fixed point decimal values (precision can be determined by the application) into a single binary array. In some implementations, fitness analytic system 110 may evaluate fitness via equation (2). By performing the Genetic Algorithm approach, fitness analytic system 110 may select an optimal set of efficiency coefficients that can satisfy the widest range of benchmark equations (e.g., via equation 2). This approach will result in an adaptive calorie estimate, which takes into account both the differences in individuals and their progression in the form of technique, fitness, and diet.

The coefficient map may be used to detect a user's (e.g., user 120) fitness strengths and deficiencies based on a movement level analysis and/or a muscle level analysis. For example, using a movement level analysis, fitness analytic system 110 may determine which movements the user needs to work on (either in technique, or in terms of muscle development) based on the low efficiency values. In another example, using muscle level analysis, fitness analytic system 110 may determine (or approximate) the effectiveness of a specific muscle by comparing the efficiencies of all movements that have a high utilization of that muscle of interest. That is, fitness analytic system 110 can filter the efficiency coefficient for every movement associated with a specific muscle group (e.g., bicep muscle group, triceps muscle group) based on a utilization factor greater than a predetermined threshold (for example between 1% and 75%).

FIG. 2 illustrates a fitness analytic apparatus 210 programmed with instructions to execute a fitness genome engine on a mobile platform, such as fitness genome engine 110. The fitness analytic apparatus 210 includes a screen configured to present graphic user interfaces providing timeline and generator functionalities, social media group and following functionalities, analytic functionalities, glossary and instructional functionalities, athlete data functionalities, edit and score work out functionalities, and create workout functionalities. In some implementations, fitness analytic apparatus 210 may be (or may include) fitness genome engine 110.

The fitness analytic apparatus 210 includes hardware such as an accelerometer, a gyroscope, and other motion detection apparatuses. For example, the fitness analytic apparatus 210 may detect the motion of a user by querying motion data from the one or more motion detection apparatuses. Computer software programmed into memory for execution on processors in the fitness analytic apparatus 210 enable the functionalities described herein. The functionalities include fitness tracking and analysis. In some implementations, fitness analytic apparatus 210 includes conductivity measuring equipment, such as a sweat sensor, and/or temperature measurement equipment, such as a thermocouple.

The combination of hardware and software in the fitness analytic apparatus 210 enables the generation of workouts, including the identification of fitness movements workout discovery with user friends, gym and groups. The fitness analytic apparatus 210 can synchronize and allow for offline access with fast response time and relate all movement style to impacted results such as muscle group, calories, etc. The connectivity of the fitness analytic apparatus 210 to server 220 permits the relation of workouts to friends, group and following pros (social network) as well as relating stretches to workouts and movements.

Advantageously, the fitness analytic apparatus 210 identifies deficiencies of each user workout; it ties fitness, nutrition and biosignal in a single solution; it learns user workout with results to improve specifically to the user; and it provides detail analytics with necessary information to assist coaches to improve athlete performance such as orange theory.

The fitness analytic apparatus 210 provides technical solutions to problems inherent to prior technologies. For example, the fitness analytic apparatus 210 can express the concept of a workout (from multiple fitness disciplines) into a generic format that can be processed efficiently. The fitness analytic apparatus 210 also defines a computational model that can be used to define property functions that quantify a given characteristic of an arbitrary workout (e.g. duration, calorie consumption, average power, etc). The fitness analytic apparatus 210 also defines a computational model that can be used to quantify ‘similarity’ between two arbitrary workouts and they do not define a computational model that includes a set of mutation operators which can be used to either modify an existing workout or create an entirely new workout.

Furthermore, the fitness analytic apparatus 210 defines a computational model that allows users to combine mutation operators with property functions to create optimization functions. Such functions can modify an arbitrary workout in an attempt to optimize a given property of it (duration, calories, muscles, aesthetics, etc.) or synthesize a completely new workout. The fitness analytic apparatus 210 also defines a computational model that can incorporate an athletes performance (both quantitative data like “score” and body metrics (BPM, blood/oxygen level, etc) or qualitative metrics like “how much they enjoyed the workout?”) to both detect training deficiencies and suggest improvements to an athletes programming.

FIGS. 3-6 depict illustrative graphic user interfaces providing timeline and generator functionalities in accordance with an illustrative embodiment. FIG. 3 illustrates a timeline view that displays workouts logged by athletes the user is following. The interface enables to user to search for athletes with profiles in the system. As such, the user can discover new workouts by looking at workouts done by others. The user can also challenge others by completing the same workout and logging workout results. FIG. 4 illustrates an interface showing a log for a particular workout including rankings, either full or scaled, to compare fitness performances. FIG. 5 illustrates and interface that shows one of many workouts. The system can generate hundreds of thousands of unique, non-repetitive workouts based on equipment availability. All workouts are scalable and can be modified. The workouts listed on the interface have links to descriptions about each movement in the workout. FIG. 6 illustrates an interface in which a user can select and deselect equipment available for generated workouts. The list preferably includes equipment in a typical functional fitness gym.

FIGS. 7-10 depict illustrative graphic user interfaces providing social media group and following functionalities in accordance with an illustrative embodiment. FIG. 7 illustrates a selection menu for a user to select a number of different functions, including generating a workout, logging a workout, and other workout options. FIG. 8 illustrates an interface that shows information about groups with multiple workouts each day. Performance rankings can be displayed for all athletes following the program. FIG. 9 illustrates a search function in which athletes in the system can be found by full name or username. FIG. 10 illustrates an interface showing athlete images and names as well as links to profiles and timelines. Users can choose to follow or unfollow other athletes.

FIGS. 11-13 depict illustrative graphic user interfaces providing analytic functionalities in accordance with an illustrative embodiment. FIG. 11 illustrates an interface showing a muscle diagram representing intensity of training on each muscle group for a particular week. FIG. 12 illustrates an interface with analytics for a duration of workouts performed. Duration of workouts can help indicate if workouts are varied to hit all types of metabolic states. FIG. 13 illustrates an interface with cardio analytics tracked weekly for distance running, rowing, and swimming.

FIGS. 14-17 depict illustrative graphic user interfaces providing glossary and instructional functionalities in accordance with an illustrative embodiment. FIG. 14 illustrates an interface with a glossary of movements, equipment, and stretches. The interface is configured to show movement frequency of the user's workouts. As such, athletes can see what movements they are missing from their program. The interface also provides a listing of equipment found in a fitness gym and a listing of yoga stretches. FIG. 15 illustrates an interface of a glossary entry for “Snatch,” which is a particular movement. The interface identifies muscles that the movement targets, movement standards for technique, equipment necessary for the movement, suggested stretches for the movement, a sample movement video, and logged workouts containing the movement. FIG. 16 illustrates an image of equipment and possible movements with the equipment. The interface can also include websites where the equipment may be purchased. FIG. 17 illustrates an image of a stretch and details of standards and tips for the stretch.

FIGS. 18-21 depict illustrative graphic user interfaces providing athlete data functionalities in accordance with an illustrative embodiment. FIG. 18 illustrates a timeline of logged workouts for a particular user. The workouts can be modified or discarded on the personal timeline. FIG. 19 illustrates an interface with a custom account picture and user details. The user details include height and weight, which are used to accurately estimate calories. In some embodiments, the height and weight are not synchronized with a central database for privacy purposes. FIG. 20 illustrates an interface having a calendar where the user can easily view days with and without logged workouts. The calendar view allows a quick view of a specific week in the workout timeline. FIG. 21 illustrates an interface with achievements of the user including personal records as well as lifts and benchmark workouts. The scores are updated automatically from logged workouts.

FIGS. 22-25 depict illustrative graphic user interfaces providing edit and score work out functionalities in accordance with an illustrative embodiment. FIG. 22 illustrates and interface where a workout is edited and notes added. FIG. 23 illustrates an interface with a drop down menu for autocomplete of the workout editing. An information icon can be selected to provide details on a movement. FIG. 24 illustrates an interface in which timing scoring are entered for parts of the workout are entered. FIG. 25 illustrates an interface showing repetition scoring for a workout. Partial completed rounds can be highlighted in the interface.

FIGS. 26-32 depict illustrative graphic user interfaces providing create workout functionalities in accordance with an illustrative embodiment. FIG. 26 illustrates an interface showing an entry or selection for a specific number of rounds for each movement time. FIG. 27 illustrates an interface for an entry or selection of multiple rounds varying in repetitions. FIG. 28 illustrates an interface for an entry or selection of as many rounds and/or repetitions as possible within a specified time. FIG. 29 illustrates an interface for an entry or selection of frequency of activity. FIG. 30 illustrates an interface for an entry or selection of a set of movements performed. FIG. 31 illustrates an interface for an entry or selection of a movement for time or distance. FIG. 32 illustrates an interface for an entry or selection of movements performed following a workout or a rest interface for a specific number of rounds.

FIG. 33 is a flow diagram illustrating a method of encoding a workout in accordance with an illustrative embodiment. In alternative embodiments, fewer, additional, and/or different operations may be performed. The process 3300 may be implemented by a fitness analytic system such as fitness analytic system 110 of FIG. 1A. Also, the use of a flow diagram is not meant to be limiting with respect to the order of operations performed. At an operation 3305, the system identifies a movement to include in a workout. The identification of a movement can be based on the fitness equipment available to the user. The identification of a movement can also be based on user-defined physical characteristics or preferences. At an operation 3310, the system determines a number of repetitions for the identified movement. Repetitions depend on the experience level of the user, the training regime selected, an analysis of workouts performed by the user, and other factors.

In an operation 3315, the system identifies groups of movements to include in a defined workout. The groups of movements can include movements targeting certain muscles or focusing on different muscles for the defined workout. A number of considerations can be considered for the formation of groups of movements. The grouping can be based on user-defined physical characteristics or preferences. The grouping can also be based on groups of friends or people the user follows on social media. At an operation 3320, the system determines a number of repetitions for the group. Repetitions depend on the experience level of the user, the training regime selected, an analysis of workouts performed by the user, and other factors.

FIG. 34 is a flow diagram illustrating a method of optimizing a workout in accordance with an illustrative embodiment. In alternative embodiments, fewer, additional, and/or different operations may be performed. The process 3400 may be implemented by a fitness analytic system such as fitness analytic system 110 of FIG. 1A. Also, the use of a flow diagram is not meant to be limiting with respect to the order of operations performed. At an operation 3405, the system obtains a defined workout. The system can locate a workout from a local memory storage or from a remote memory, including a remote network location such as storage systems reached over the Internet. At an operation 3410, the system modifies the duration of the obtained workout. Modifications to workout duration can include increase or decrease of repetitions of movements or increase or decrease of repetitions of group performance. The modifications can be made in response to an analysis of performance of the user or in response to a training regime that has difficulty increasing or decreasing over time.

In an operation 3415, the system modifies the aesthetic of the workout. The system defines different workouts with aesthetic qualities based on the movement, the repetitions, and the muscles used. The modification of the aesthetic can change the look of the workout based on user requirements. At an operation 3420, the system modifies the movement of the workout. The system can change movements in the workout in response to an analysis of the workout performance to increase or decrease difficulty or to change training goals.

FIG. 35 is a flow diagram illustrating a method of forming a workout, in accordance with an illustrative embodiment. In alternative embodiments, fewer, additional, and/or different operations may be performed. The process 3400 may be implemented by a fitness analytic system such as fitness analytic system 110 of FIG. 1A. Also, the use of a flow diagram is not meant to be limiting with respect to the order of operations performed. At an operation 3502, the system identifies a movement associated with a user. At operation 3504, the system determines a movement repetition count associated with the movement. At operation 3506, the system identifies a group of movements. In some implementations, the group of movements includes a plurality of movements and a plurality of movement repetition counts corresponding to each of the plurality of movements. At operation 3508, the system determines a group repetition count for the group of movements. At operation 3510, the system forms a workout based on the group of movements and the group repetition count. At operation 3512, the system modifies the workout based on performance data received from use of the workout. At operation 3514, the system determines if a new movement is being performed. If yes, then the system returns to operation 3502 to identify the new movement associated with a user; otherwise, the system returns to operation 3512 to continue modifying the workout based on performance data received from use of the workout.

In an illustrative embodiment, any of the operations described herein can be implemented at least in part as computer-readable instructions stored on a computer-readable medium or memory. Upon execution of the computer-readable instructions by a processor, the computer-readable instructions can cause a computing device to perform the operations.

The foregoing description of illustrative embodiments has been presented for purposes of illustration and of description. It is not intended to be exhaustive or limiting with respect to the precise form disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from practice of the disclosed embodiments. It is intended that the scope of the disclosure be defined by the claims appended hereto and their equivalents.

The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the steps of various implementations must be performed in the order presented. As will be appreciated by one of skill in the art the order of steps in the foregoing implementations may be performed in any order. Words such as “thereafter,” “then,” “next,” etc. are not intended to limit the order of the steps; these words are simply used to guide the reader through the description of the methods. Further, any reference to claim elements in the singular, for example, using the articles “a,” “an” or “the” is not to be construed as limiting the element to the singular.

The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the implementations disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some steps or methods may be performed by circuitry that is specific to a given function.

In some exemplary implementations, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable storage medium or non-transitory processor-readable storage medium. The steps of a method or algorithm disclosed herein may be embodied in a processor-executable software module, which may reside on a non-transitory computer-readable or processor-readable storage medium. Non-transitory computer-readable or processor-readable storage media may be any storage media that may be accessed by a computer or a processor. By way of example but not limitation, such non-transitory computer-readable or processor-readable storage media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of non-transitory computer-readable and processor-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a non-transitory processor-readable storage medium and/or computer-readable storage medium, which may be incorporated into a computer program product. 

What is claimed is:
 1. A method of forming a workout, the method implemented by one or more processors of a fitness genome apparatus communicatively coupled with a server and according to a set of instructions stored on a memory of the computing device, the method comprising: identifying, by the fitness genome apparatus, a movement associated with a user; determining, by the fitness genome apparatus, a movement repetition count associated with the movement; identifying, by the fitness genome apparatus, a group of movements, wherein the group of movements includes a plurality of movements and a plurality of movement repetition counts corresponding to each of the plurality of movements; determining, by the fitness genome apparatus, a group repetition count for the group of movements; forming, by the fitness genome apparatus, a workout based on the group of movements and the group repetition count; and modifying, by the fitness genome apparatus, the workout based on performance data received from use of the workout.
 2. The method of claim 1, wherein identifying the movement comprises: receiving, by the fitness genome apparatus, physical characteristic data associated with the user; detecting, by the fitness genome apparatus, a motion associated with the user; and identifying, by fitness genome apparatus, the movement based on at least one of the physical characteristic data and the motion associated with the user.
 3. The method of claim 1, wherein determining the group repetition count is based on at least one of experience data associated with the user, a training regime selected by the user, and historical workout data associated with the user.
 4. The method of claim 1, comprising receiving, by the fitness genome apparatus and from the server, social media data comprising a list of people the user follows on a social media group; and identifying, by the fitness genome apparatus, the group of movements based on the social media data.
 5. The method of claim 1, wherein modifying the workout comprises: detecting, by the fitness genome apparatus, a motion associated with the user; determining, by the fitness genome apparatus, a training regime having difficulty increasing over time; and decreasing the group repetition count.
 6. The method of claim 1, wherein modifying the workout comprises: detecting, by the fitness genome apparatus, a motion associated with the user; determining, by the fitness genome apparatus, a training regime having difficulty decreasing over time; and increasing the group repetition count.
 7. The method of claim 1, comprising: classifying, by the fitness genome apparatus, the workout based on a property function, a distance function, and an optimization function; wherein the property function quantifies at least one of a duration of the workout, a energy expenditure of the workout, and an average power of the workout; wherein the distance function quantifies a similarity of the workout and a second workout; and wherein the optimization function comprises a mutation operator and the property functions.
 8. The method of claim 7, comprising modifying the workout using the optimization function.
 9. The method of claim 1, comprising: detecting, by the fitness genome apparatus, training deficiencies based on the performance data; generating, by the fitness genome apparatus, suggestions to improve the performance data; and displaying, by the fitness genome apparatus, the suggestions on a screen of the computing device.
 10. The method of claim 1, comprising: determining, by the fitness genome apparatus, muscles targeted by the movement; identifying, by the fitness genome apparatus, a stretch exercise associated with the movement; and displaying, by the fitness genome apparatus and on a screen of the computing device, a title of the stretch exercise, a description of the stretch exercise, and a figure performing the stretch exercise.
 11. A system to form a workout, the system comprising: a computing device communicatively coupled with a server, the computing device configured to: identify a movement associated with a user; determine a movement repetition count associated with the movement; identify a group of movements, wherein the group of movements includes a plurality of movements and a plurality of movement repetition counts corresponding to each of the plurality of movements; determine a group repetition count for the group of movements; form a workout based on the group of movements and the group repetition count; and modify the workout based on performance data received from use of the workout.
 12. The system of claim 10, comprising the computing device configured to: receive, physical characteristic data associated with the user; detect, a motion associated with the user; and identify the movement based on at least one of the physical characteristic data and the motion associated with the user.
 13. The system of claim 10, comprising the computing device configured to: determine the group repetition count based on at least one of experience data associated with the user, a training regime selected by the user, and historical workout data associated with the user.
 14. The system of claim 10, comprising the computing device configured to: receive, from the server, social media data comprising a list of people the user follows on a social media group; and identify the group of movements based on the social media data.
 15. The system of claim 10, comprising the computing device configured to: detect a motion associated with the user; determine a training regime having difficulty increasing over time; and decrease the group repetition count to modify the workout.
 16. The system of claim 10, comprising the computing device configured to: detect a motion associated with the user; determine a training regime having difficulty decreasing over time; and increase the group repetition count to modify the workout.
 17. The system of claim 10, comprising the computing device configured to: classify the workout based on a property function, a distance function, and an optimization function; wherein the property function quantifies at least one of a duration of the workout, a calorie consumption of the workout, and an average power of the workout; wherein the distance function quantifies a similarity of the workout and a second workout; and wherein the optimization function comprises a mutation operator and the property functions.
 18. The system of claim 17, comprising the computing device configured to modify the workout based on the optimization function.
 19. The system of claim 10, comprising the computing device configured to: detect training deficiencies based on the performance data; generate suggestions to improve the performance data; and display the suggestions on a screen of the computing device.
 20. The system of claim 10, comprising the computing device configured to: determine muscles targeted by the movement; identify a stretch exercise associated with the movement; and display, on a screen of the computing device, a title of the stretch exercise, a description of the stretch exercise, and figure performing the stretch exercise. 